
package trabalhotec.BD;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.Vector;

public class Voos {
     Connection con;
     Statement stmt;
     Vector<Vector> voos;
     Vector<String> aero;
     public Vector<Vector> listarVoo(){
         con = null;
         stmt = null;
         Statement stmt2 = null;
        try {
            voos = new Vector<Vector>();
            con = Conexao.abrirConexao();
            stmt = con.createStatement();
            stmt2 = con.createStatement();
            String busca = "SELECT * FROM voos";
            ResultSet rs = stmt.executeQuery(busca);
            while(rs.next()){
                Vector list = new Vector();
                list.add(rs.getString("Codigo"));
                list.add(rs.getString("Origem"));
                list.add(rs.getString("Destino"));
                list.add(DataUtil.obterDataDoBanco(rs.getTimestamp("Datadepartida")));
                list.add(DataUtil.obterDataDoBanco(rs.getTimestamp("Datadechegada")));
                list.add(rs.getInt("Tempodevoo"));
                float preco = rs.getFloat("Preco");
                String buscapromo = "Select * from promocao where Voo = '"+rs.getString("Codigo")+"' AND datainicio < current_time < datafim";
                ResultSet rs2 = stmt2.executeQuery(buscapromo);
                if (rs2.next()) preco = preco - (rs2.getFloat("Desconto")/100)*preco;
                list.add(preco);
                list.add(rs.getInt("Quantidadedelugares"));
                voos.add(list);
            }
            
        } catch (SQLException ex) {
            System.out.println("erro ao acessar banco de dados");
        }finally{
            try {
                stmt.close();
                stmt2.close();
                con.close();
            } catch (SQLException ex) {
                System.out.println("erro ao fechar conexao com o banco de dados");
            }
        }
         return voos;
         
     }
     public boolean verificarVoo(String data,String origem,String destino){
            boolean ver = true;
            con = null;
            stmt = null;
            try {
            con = Conexao.abrirConexao();
            stmt = con.createStatement();
            String[] o = origem.split("-");
            String[] d = destino.split("-");
            String veri = "Select * from voos where datadepartida = '" + DataUtil.obterDataParaBanco(data) + "' AND origem = '"+ o[0]+"' AND destino = '"+d[0]+"'";
            ResultSet rs = stmt.executeQuery(veri);
            if (rs.next()) ver = false;
            } catch (SQLException ex) {
            System.out.println("Erro ao acessar o banco de dados");
            }
            try {
                stmt.close();
                con.close();
            } catch (SQLException e) {
                System.out.println("Erro ao fechar conexao");
            }
            return ver;
     }
     public void excluirVoo(String Cod) throws SQLException{
         con = null;
         stmt = null;
             con = Conexao.abrirConexao();
             stmt = con.createStatement();
             String excluir = "DELETE FROM voos where Codigo = '"+Cod+"'";
             stmt.executeUpdate(excluir);
            try {
                stmt.close();
                con.close();
            } catch (SQLException ex) {
                System.out.println("Erro ao fechar conexao");
         }
     }
     public void cadVoos(String Cod,String origem,String destino, Date partida,Date chegada,int tempodevoo, float preco, int qtdpass) throws SQLException{
         con = null;
         stmt = null;
            con = Conexao.abrirConexao();
            stmt = con.createStatement();
            String inserir = "INSERT INTO voos VALUES ('"+Cod+"','"+origem+"','"+destino+"','"+DataUtil.obterDataParaBanco(partida)+"','"+DataUtil.obterDataParaBanco(chegada)+"',"+tempodevoo+","+preco+","+qtdpass+")";
            System.out.println(inserir);
            stmt.executeUpdate(inserir);
            try {
                stmt.close();
                con.close();
            } catch (SQLException ex) {
                System.out.println("Erro ao fechar conexao");
            }
     }
     public Vector<String> aeroportos(){
         con = null;
         stmt = null;
         try{
            aero = new Vector<String>();
            con = Conexao.abrirConexao();
            stmt = con.createStatement();
            String busca = "SELECT * FROM aeroporto";
            ResultSet rs = stmt.executeQuery(busca);
            while(rs.next()){
                aero.add(rs.getString("Codigo")+"-"+rs.getString("Nome"));
            }
         }catch(SQLException e){
             System.out.println("Erro ao acessar o banco de dados");
         }finally{
            try {
             stmt.close();
             con.close();
             } catch (SQLException ex) {
                System.out.println("Erro ao fechar conexao");
            }
         }
         return aero;
     }
}
